import Request from 'luch-request';
import Vue from 'vue';
let api = new Request();
export let apiCode = () => {
	/**
	     * @description 修改全局默认配置
	     * @param {Function}   
	*/
	api.setConfig((config) => { /* config 为默认全局配置*/
	    // config.baseURL = 'http://192.168.1.16:8020'; /* 根域名 */
		config.baseURL = 'http://192.168.31.154:8020'; /* 根域名 */
	    config.header = {};
	    return config;
	});
	// TODO 拦截器
	api.interceptors.request.use((config) => { // 可使用async await 做异步操作
	  uni.showLoading({ title: "加载中..." });
	  config.header = { ...config.header };
	  const url = ['/api/login','/api/reguser'];// 白名单
	  const token = uni.getStorageSync('token') || null;
	  config.header.Authorization = token;
	   if (!token && url.indexOf(config.url) === -1 ){
		  Promise.reject(config);
		  return uni.reLaunch({ url: "/pages/login/index" });
	   }; // 如果token不存在，return Promise.reject(config) 会取消本次请求
	  return config;
	}, config => { // 可使用async await 做异步操作
	  return Promise.reject(config);
	});
	// TODO 响应器
	api.interceptors.response.use((response) => { /* 对响应成功做点什么 可使用async await 做异步操作*/
	uni.hideLoading();
	if(parseInt(response.data.code) === 400 || parseInt(response.data.code) !== 200){
		uni.showToast({ title: response.data.message , icon: "error" });
		if(response.data.code === 0){
			uni.removeStorageSync("token");
			uni.reLaunch({ url: "/pages/login/index" });
			return Promise.reject(response);
		};
		return Promise.reject(response);
	};
	 if (response.config.custom.verification) return response.data;
	  return response.data;
	}, (response) => { /*  对响应错误做点什么 （statusCode !== 200）*/
	  uni.hideLoading();
	  uni.showToast({ title: "服务器异常" , icon: "error" });
	  return Promise.reject(response);
	});
	Vue.prototype.$api = api;
};
export const get = ({ url , value }) => {
	return new Promise((resolve , reject) => {
		api.get(url + value).then(res => {
			resolve(res);
		}).catch(err => {
			reject(err);
		});
	});
};
export const post = ({ url , data }) => {
	return new Promise((resolve , reject) => {
		api.post(url,data).then(res => {
			resolve(res);
		}).catch(err => {
			reject(err);
		});
	});
};